home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 5 / Apprentice-Release5.iso / Source Code / C / Games / Xconq 7.1.0 / src / xconq-7.1.0 / kernel / ai.h < prev    next >
Encoding:
C/C++ Source or Header  |  1996-07-07  |  4.2 KB  |  99 lines  |  [TEXT/R*ch]

  1. /* Definitions common to all AIs.
  2.    Copyright (C) 1992, 1993, 1994, 1995, 1996 Stanley T. Shebs.
  3.  
  4. Xconq is free software; you can redistribute it and/or modify
  5. it under the terms of the GNU General Public License as published by
  6. the Free Software Foundation; either version 2, or (at your option)
  7. any later version.  See the file COPYING.  */
  8.  
  9. typedef enum {
  10.     nobrains = 0,
  11.     mplayertype = 1
  12.     /* plus other types as defined */
  13. #ifdef MPW_C
  14.     /* Works around an MPW C bug where byte-sized enums lose - symptom
  15.        is that AIs never do anything. */
  16.     , aitype_intifier = 1000000
  17. #endif /* MPW_C */
  18. } AIType;
  19.  
  20. typedef struct a_ai_op {
  21.     char *name;
  22.     int (*to_test_compat) PARAMS ((void));
  23.     void (*to_init) PARAMS ((Side *side));
  24.     void (*to_init_turn) PARAMS ((Side *side));
  25.     void (*to_decide_plan) PARAMS ((Side *side, Unit *unit));
  26.     void (*to_react_to_unit_loss) PARAMS ((Side *side, Unit *unit));
  27.     void (*to_react_to_action_result) PARAMS ((Side *side, Unit *unit,
  28.                           int rslt));
  29.     void (*to_react_to_task_result) PARAMS ((Side *side, Unit *unit,
  30.                         Task *task, TaskOutcome rslt));
  31.     void (*to_react_to_new_side) PARAMS ((Side *side, Side *side2));
  32.     int (*planning_to_capture) PARAMS ((Side *side, int u, int x, int y));
  33.     int (*to_guide_explorer) PARAMS ((Side *side, Unit *unit));
  34.     int (*preferred_build_type) PARAMS ((Side *side, Unit *unit, int plantype));
  35.     void (*to_analyze_after_moves) PARAMS ((Side *side, int numacted));
  36.     void (*to_finish_movement) PARAMS ((Side *side));
  37.     void (*to_receive_message) PARAMS ((Side *side, Side *sender, char *str));
  38.     Obj *(*to_save_state) PARAMS ((Side *side));
  39.     int (*region_at) PARAMS ((Side *side, int x, int y));
  40.     char *(*at_desig) PARAMS ((Side *side, int x, int y));
  41.     int dummy;
  42. } AI_ops;
  43.  
  44. /* Definition common to all ai types. (?) */
  45.  
  46. typedef struct a_ai {
  47.   int dummy;
  48. } AI;
  49.  
  50. #define side_ai_type(s) ((s)->aitype)
  51.  
  52. /* Add declaration of AI hooks here. */
  53.  
  54. extern void init_ai_types PARAMS ((void));
  55. extern void init_ai PARAMS ((Side *side));
  56. extern void set_side_ai PARAMS ((Side *side, char *typename));
  57. extern void ai_init_turn PARAMS ((Side *side));
  58. extern void ai_decide_plan PARAMS ((Side *side, Unit *unit));
  59. extern void ai_react_to_unit_loss PARAMS ((Side *side, Unit *unit));
  60. extern void ai_react_to_action_result PARAMS ((Side *side, Unit *unit,
  61.                           int rslt));
  62. extern void ai_react_to_task_result PARAMS ((Side *side, Unit *unit,
  63.                         Task *task, TaskOutcome rslt));
  64. extern void ai_react_to_new_side PARAMS ((Side *side, Side *side2));
  65. extern int ai_planning_to_capture PARAMS ((Side *side, int u, int x, int y));
  66. extern int ai_guide_explorer PARAMS ((Side *side, Unit *unit));
  67. extern int ai_preferred_build_type PARAMS ((Side *side, Unit *unit,
  68.                        int plantype));
  69. extern void ai_analyze_after_moves PARAMS ((Side *side, int numacted));
  70. extern void ai_finish_movement PARAMS ((Side *side));
  71. extern void ai_receive_message PARAMS ((Side *side, Side *sender, char *str));
  72. extern void ai_save_state PARAMS ((Side *side));
  73. extern int ai_region_at PARAMS ((Side *side, int x, int y));
  74. extern char *ai_at_desig PARAMS ((Side *side, int x, int y));
  75.  
  76. extern void ai_init_shared PARAMS ((void));
  77. extern int basic_worth PARAMS ((int u));
  78. extern int basic_hit_worth PARAMS ((int u, int e));
  79. extern int basic_fire_worth PARAMS ((int u, int e));
  80. extern int basic_capture_worth PARAMS ((int u, int e));
  81. extern int basic_transport_worth PARAMS ((int u, int e));
  82. extern int unit_strength PARAMS ((int u));
  83. extern void display_assessment PARAMS ((void));
  84.  
  85. extern int is_base_for PARAMS ((int u1, int u2));
  86. extern int is_carrier_for PARAMS ((int u1, int u2));
  87.  
  88. extern void set_u_is_base PARAMS ((int u, int n));
  89. extern void set_u_is_transport PARAMS ((int u, int n));
  90. extern void set_u_is_carrier PARAMS ((int u, int n));
  91. extern void set_u_is_base_builder PARAMS ((int u, int n));
  92. extern void set_u_can_make PARAMS ((int u, int n));
  93. extern void set_u_can_capture PARAMS ((int u, int n));
  94. extern void set_u_bw PARAMS ((int u, int n));
  95. extern void set_uu_bhw PARAMS ((int u1, int u2, int v));
  96. extern void set_uu_bfw PARAMS ((int u1, int u2, int v));
  97. extern void set_uu_bcw PARAMS ((int u1, int u2, int v));
  98. extern void set_uu_btw PARAMS ((int u1, int u2, int v));
  99.